Response Compression Middleware হলো ASP.NET Core এর একটি বিল্ট-ইন ফিচার, যা সার্ভার থেকে ক্লায়েন্টে পাঠানো ডেটার আকার কমিয়ে অ্যাপ্লিকেশনের পারফরম্যান্স বাড়ায়। এটি HTTP রেসপন্সের আকার কমাতে gzip, brotli, বা custom compression providers ব্যবহার করে।
ASP.NET Core এর জন্য Microsoft.AspNetCore.ResponseCompression NuGet প্যাকেজ ইন্সটল করুন:
dotnet add package Microsoft.AspNetCore.ResponseCompression
Middleware যোগ করার জন্য Program.cs
ফাইল আপডেট করুন:
var builder = WebApplication.CreateBuilder(args);
// Response Compression Middleware সেবায় যুক্ত করা
builder.Services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>(); // gzip যোগ করা
options.Providers.Add<BrotliCompressionProvider>(); // brotli যোগ করা
options.EnableForHttps = true; // HTTPS এর জন্য Compression চালু করা
});
// Compression Level সেট করা (Advanced Configuration)
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = System.IO.Compression.CompressionLevel.Fastest;
});
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = System.IO.Compression.CompressionLevel.SmallestSize;
});
var app = builder.Build();
// Response Compression Middleware অ্যাপ্লিকেশনে যুক্ত করা
app.UseResponseCompression();
app.MapGet("/", () => "This is a compressed response!");
app.Run();
Gzip হলো সবচেয়ে জনপ্রিয় এবং সমর্থিত কমপ্রেশন পদ্ধতি। এটি সহজে কনফিগারযোগ্য এবং ব্রাউজার দ্বারা সমর্থিত।
options.Providers.Add<GzipCompressionProvider>();
Brotli একটি আধুনিক কমপ্রেশন অ্যালগরিদম, যা gzip এর চেয়ে আরও ভালো কমপ্রেশন সরবরাহ করে।
options.Providers.Add<BrotliCompressionProvider>();
আপনার নিজস্ব কমপ্রেশন প্রোভাইডার তৈরি করতে:
public class CustomCompressionProvider : ICompressionProvider
{
public string EncodingName => "custom";
public bool SupportsFlush => true;
public Stream CreateStream(Stream outputStream)
{
// Custom compression logic
return outputStream;
}
}
Middleware-এ প্রোভাইডার যোগ করুন:
options.Providers.Add<CustomCompressionProvider>();
EnableForHttps
HTTPS রেসপন্স কমপ্রেসড করতে EnableForHttps
সক্রিয় করুন। ডিফল্টভাবে এটি বন্ধ থাকে।
options.EnableForHttps = true;
MimeTypes
কোন ধরনের কন্টেন্ট কমপ্রেস করা হবে তা নির্ধারণ করতে:
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
"application/json",
"text/css",
"image/svg+xml"
});
CompressionLevel
Compression Level নির্ধারণ করে ডেটা কম্প্রেশন ও পারফরম্যান্সের মধ্যে ভারসাম্য বজায় রাখা যায়:
Accept-Encoding
হেডার পরীক্ষা করা হয়।Content-Encoding
হেডার চেক করুন (e.g., gzip, br)।curl -H "Accept-Encoding: gzip" https://localhost:5001
Response Compression Middleware ASP.NET Core অ্যাপ্লিকেশনের পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার একটি শক্তিশালী টুল। এটি সহজে কনফিগারযোগ্য এবং HTTPS সহ সব ধরনের পরিবেশে কার্যকর।
common.read_more